<?php
/*
  [EWEISHOP] Copyright(C) 2017 Elinkint Inc.
  This is NOT a freeware, use is subject to license terms
   
  PaymentRedpack.php 2018-05-24 18:52 cunx $
   
*/

namespace common\library\wechat\payment;

use common\component\wechat\Wechat;
use common\helpers\Error;
use common\library\wechat\WechatApi;

/**
 * 微信红包
 * Class PaymentRedpack
 * @package common\library\wechat\payment
 */
class PaymentRedpack extends WechatApi
{
    public static $apiType = 'payment';
    static $paymentId = 0;
    /**
     * 发放普通红包
     * @param array $redpackParams  微信红包参数数组
     * -------------------------------------------------------------
     * $redpackParams[mch_billno]   商户订单号
     * $redpackParams[send_name]    商户名称
     * $redpackParams[re_openid]    用户openid
     * $redpackParams[total_num]    红包发放总人数
     * $redpackParams[total_amount] 付款金额
     * $redpackParams[wishing]      红包祝福语
     * $redpackParams[client_ip]    Ip地址
     * $redpackParams[act_name]     活动名称
     * $redpackParams[remark]       备注
     * $redpackParams[scene_id]     场景id
     * $redpackParams[...]          其他微信开发文档上的参数
     * -------------------------------------------------------------
     * @return array|bool|void
     * @author cunx
     * @link https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3 发放普通红包
     */
    public static function send(array $redpackParams){
        try{
            $result = self::getInstance()->redpack->sendNormal($redpackParams);
            if ($result['result_code'] === 'FAIL'){
                throw new Error(40000,$result['err_code_des']);
            }
        }catch(\Exception $exception){
            $result = $exception;
        }
        return Wechat::apiError($result);
    }

    /**
     * 发放裂变红包
     * @param array $redpackParams  微信红包参数数组，请查阅微信开发文档
     * -------------------------------------------------------------
     * $redpackParams[mch_billno]   商户订单号
     * $redpackParams[send_name]    商户名称
     * $redpackParams[re_openid]    接收红包的种子用户（首个用户）的openid
     * $redpackParams[total_num]    红包发放总人数，不低于3
     * $redpackParams[total_amount] 红包金额
     * $redpackParams[wishing]      红包祝福语
     * $redpackParams[client_ip]    Ip地址
     * $redpackParams[act_name]     活动名称
     * $redpackParams[remark]       备注
     * $redpackParams[scene_id]     场景id
     * $redpackParams[...]          其他微信开发文档上的参数
     * -------------------------------------------------------------
     * @return array|bool|void
     * @author cunx
     * @link https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5&index=4 发放裂变红包
     */
    public static function sendGroup(array $redpackParams){
        try{
            $result = self::getInstance()->redpack->sendGroup($redpackParams);
        }catch(\Exception $result){}
        return Wechat::apiError($result);
    }

//    /**
//     * 红包预下单接口
//     * ------------------------------------
//     * 红包预下单接口是为摇一摇红包接口配合使用的，
//     * 在开发摇一摇周边的摇红包相关功能时，
//     * 需要调用本接口获取红包单号
//     * -------------------------------------
//     * @param array $redpackParams  微信红包参数数组，请查阅微信开发文档
//     * @return array|bool|void
//     * @author cunx
//     * @link https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1459327193 摇一摇红包文档
//     */
//    public static function prepare(array $redpackParams){
//        try{
//            $result = self::getInstance()->redpack->prepare($redpackParams);
//        }catch(\Exception $result){}
//        return Wechat::apiError($result);
//    }

    /**
     * 查询红包记录
     * @param string $mchBillNo 发放红包的商户订单号
     * @return array|bool|void
     * @author cunx
     * @link https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_6&index=5  查询红包记录文档
     */
    public static function getInfo(string $mchBillNo){
        try{
            $result = self::getInstance()->redpack->info($mchBillNo);
        }catch(\Exception $result){}
        return Wechat::apiError($result);
    }

}